iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
Mobile Development

開除老闆計劃系列 第 26

[Day-26] Cursor 幫我改 Code,但我沒想到它也會改壞我整個流程

  • 分享至 

  • xImage
  •  

前幾天我在重構健身紀錄系統的前端邏輯時,發現一件有趣又慘痛的事。
那天我只是單純想「讓程式更乾淨一點」,於是打開 Cursor,對它說:

「幫我重構一下這段 Redux Toolkit 的程式,邏輯保持不變。」

結果,它真的很聽話——太聽話了。


AI 重構後,表面一切完美

重構後的程式碼看起來乾淨到不行,變數名稱漂亮、結構整齊,甚至還幫我刪了幾個看起來「多餘」的 useEffect。
我看了覺得滿意,直接 commit。
結果一跑起來,資料不更新、按鈕沒反應,整個流程像被拔掉靈魂一樣。

一開始我以為是 Axios 拿到的資料有問題,
後來才發現——Cursor 把我某個 dispatch 的時機點改掉了

原本的程式是這樣:

useEffect(() => { if (userId) { dispatch(fetchWorkoutRecords(userId)); } }, [userId]); 

Cursor 重構後,它幫我「聰明優化」成這樣:

if (userId) { dispatch(fetchWorkoutRecords(userId)); } 

看起來乾淨多了,對吧?
但問題是——這樣一來,component mount 時根本沒執行!


我學到的教訓:AI 沒有「上下文記憶」

AI 看程式的邏輯是靜態的,它不會真的去「跑」一次你的應用程式。
它看到的只是「語法」,而不是「生命週期」。
對它來說,把 useEffect 拿掉只是結構重整;
但對 React 來說,那是一整個執行順序的改變。

當下我突然意識到一件事:
AI 可以幫我寫 Code,但它並不知道程式是「什麼時候該跑」的。


解法:讓 AI 解釋它為什麼這樣改

後來我不是直接改回去,而是反過來問 Cursor:

「你為什麼把 useEffect 拿掉?你覺得這樣會有什麼影響?」

這時候它的回答很有趣:

「我假設 dispatch 是在 render 階段即可安全執行,因為 useEffect 沒有副作用。」

看到這句我笑出來。
AI 真心覺得「dispatch」不是副作用。
這就是我學到的另一件事——AI 不一定懂語意,只會照著語法去判斷。


後記:AI 是副駕,不是自駕

現在我用 Cursor 時,多了一個小習慣:
讓它重構完,我會馬上問一句「請幫我說明你改了哪些地方,為什麼要改」。
這句話超有用。
你會發現它常常會幫你「誠實列出」所有改動點,有時還會自己意識到改錯。

這次事件讓我更確定一件事:
AI 開發不是「取代人」,而是「放大錯誤的速度」——如果你不懂原本的邏輯,它會讓你更快崩潰。


結語

AI 工具很強,特別是 Cursor、Gemini、Claude 這些都能幫你節省大量時間。
但開發最危險的地方不在「它寫錯」,而在「它寫對但語意錯」。
程式看起來完美無缺,卻在流程中靜靜失效。

重構從來都不只是讓 Code 漂亮,
而是要讓它「在正確的時機」做正確的事。


上一篇
[Day-25] 飲食紀錄上線:AI 幫我算熱量,但我更在意的是「記錄的意義」
下一篇
[Day-27] 打造「飲食紀錄介面」——讓記錄飲食變得像發限動一樣簡單!
系列文
開除老闆計劃27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言